#include <stdio.h>
#include <stdlib.h>
#include "ksplik.h"

int main(void) {
	struct ksiazka bibl[MAXKS];
	int licznik = 0;
	int is_deleted = 0;
	int index;
	FILE * pksiazki;
	int rozmiar = sizeof(struct ksiazka);
	char opcja;

	if((pksiazki = fopen("ksiazki.dat", "r+b")) == NULL) {
		fputs("Nie moge otworzyc pliku ksiazki.dat, tworze nowy\n", stderr);
		if((pksiazki = fopen("ksiazki.dat", "w")) == NULL) {
			fputs("Nie udalo sie stworzyc nowego pliku ksiazki.dat", stderr);
			exit(1);
		}
	}
	rewind(pksiazki);
	while(licznik < MAXKS && fread(&bibl[licznik], rozmiar, 1, pksiazki) == 1) {
		if(licznik == 0 && is_deleted == 0)
			puts("Biezaca zawartosc pliku ksiazki.dat:");
		printf("%s by %s: %.2f zl.\n", bibl[licznik].tytul, bibl[licznik].autor, bibl[licznik].wartosc);
		opcja = menu();
		while(getchar() != '\n')
			continue;
		switch(opcja) {
			case 'e' :
				edytuj(&bibl[licznik]);
				fseek(pksiazki, -rozmiar, SEEK_CUR);
				fwrite(&bibl[licznik], rozmiar, 1, pksiazki);
				fseek(pksiazki, rozmiar, SEEK_CUR);
				break;
			case 'k' :
				if (fread(&bibl[licznik], rozmiar, 1, pksiazki) == 1)
					fseek(pksiazki, -rozmiar, SEEK_CUR);
				is_deleted = 1;
				licznik--;
				break;
			case 'd' : break;
		}
		licznik++;
	}
	if(licznik == MAXKS) {
		fputs("Plik ksiazki.dat jest pelny.", stderr);
		exit(2);
	}
	puts("Podaj nowe tytuly ksiazek.");
	puts("Aby zakonczyc wcisnij [enter] na poczatku wiersza.");
	while(licznik < MAXKS && gets(bibl[licznik].tytul) != NULL && bibl[licznik].tytul[0] != '\0') {
		puts("Teraz podaj autora.");
		gets(bibl[licznik].autor);
		puts("Teraz podaj wartosc.");
		scanf("%f", &bibl[licznik++].wartosc);
		while(getchar() != '\n')
			continue;
		if(licznik < MAXKS)
			puts("Podaj nastepny tytul.");
	}
	fclose(pksiazki);
	if((pksiazki = fopen("ksiazki.dat", "w")) == NULL) {
		fputs("Nie udalo sie otworzyc pliku: ksiazki.dat", stderr);
		exit(1);
	}
	puts("Oto lista Twoich ksiazek:");
	for(index = 0; index < licznik; index++) {
		printf("%s, autor: %s, cena: %.2f zl.\n", bibl[index].tytul, bibl[index].autor, bibl[index].wartosc);
		fwrite(&bibl[index], rozmiar, 1, pksiazki);
	}
	fclose(pksiazki);

	return 0;
}
